Embedded document within an application

ABSTRACT

Data structures, methods, program products and systems for creating and executing an executable file for the Binary Runtime Environment for Wireless (BREW) where the file is capable of causing presentation of a document embedded in the file on a BREW system.

BACKGROUND

This invention relates to software development, and more particularly tocontent distribution.

It can be difficult for content publishers to create engagingexperiences for new mobile phones and other consumer electronics devicessince such devices typically have proprietary hardware interfaces andlack mature software development tools. Moreover, content developed forone device may not be compatible with other devices. To overcome thisissue, content publishers may need to create custom presentationsoftware for each device to which they publish content. However, thismakes publishing content to different devices cumbersome at best.

SUMMARY

In general, one aspect of the subject matter described in thisspecification can be embodied in a data structure within a computermemory. The data structure comprises an application for the BinaryRuntime Environment for Wireless (BREW), the application includes anexecutable portion and a document portion. The executable portion iscapable of signaling an external module to cause presentation of thedocument by the external module.

These and other aspects can optionally include one or more of thefollowing features. The document can be one of: a Flash document, aShockwave document, or a Portable Document Format (PDF) document. Thedocument can be compressed, encrypted or both. The external module canbe a BREW extension. The external module is compiled separately from theapplication.

In general, another aspect of the subject matter described in thisspecification can be embodied in a data structure within a computermemory. The data structure comprises an executable module for BREW. Theexecutable module includes an executable portion and a Flash contentportion, where the executable portion is capable of causing thepresentation of the Flash content on a mobile device.

These and other aspects can optionally include one or more of thefollowing features. The document can be compressed, encrypted or both.The external module can be a BREW extension. The external module can becompiled separately from the application.

In general, another aspect of the subject matter described in thisspecification can be embodied in a method that includes identifying anexecutable module for BREW capable of causing presentation of a documentby signaling an external module. The document is identified andincorporated into the executable module. Other embodiments of thisaspect include corresponding systems, apparatus, and computer programproducts.

These and other aspects can optionally include one or more of thefollowing features. The document can be one of: a Flash document, aShockwave document, or a Portable Document Format (PDF) document. Thedocument can be compressed, encrypted or both. The external module canbe a BREW extension. The external module can be compiled separately fromthe application.

In general, another aspect of the subject matter described in thisspecification can be embodied in a method that includes identifying anapplication for BREW. The application includes an executable portion anda document portion. The executable portion is executed, where theexecution causes presentation of the document portion by signaling anexternal module capable of causing the presentation of the document.Other embodiments of this aspect include corresponding systems,apparatus, and computer program products.

These and other aspects can optionally include one or more of thefollowing features. The document can be one of: a Flash document, aShockwave document, or a Portable Document Format (PDF) document. Theexternal module can be a BREW extension. The external module can becompiled separately from the application. An account can be debited orcredited based on the identifying, the executing or the signaling. Anaccount to be debited or credited based on receiving the application andthe external module.

In general, another aspect of the subject matter described in thisspecification can be embodied in a method that includes receiving a BREWapplication that contains a document. An external module is received andthe application is executed, where the executing causes presentation ofthe document by signaling the external module. An account is debited orcredited based on the receiving, the executing or the signaling. Otherembodiments of this aspect include corresponding systems, apparatus, andcomputer program products.

These and other aspects can optionally include one or more of thefollowing features. The document can one of: a Flash document, aShockwave document, or a Portable Document Format (PDF) document. Theexternal module can be a BREW extension. The external module can becompiled separately from the application.

Particular embodiments of the subject matter described in thisspecification can be implemented to realize one or more of the followingadvantages. Documents can be easily packaged for presentation in a BREWenvironment. Document distribution and presentation can automaticallytie into a revenue generation system. Necessary presentation softwarecan be automatically downloaded on the target device when the documentis first presented to a user. Since the content is part of a binarypackage the package provides implicit security to the content. Sincecontent is part of the binary module and the binary module is loaded bythe system no additional run time memory may be required to load thecontent.

The details of one or more embodiments of the invention are set forth inthe accompanying drawings and the description below. Other features,objects, and advantages of the invention will be apparent from thedescription and drawings, and from the claims.

DESCRIPTION OF DRAWINGS

FIG. 1 is a schematic diagram of the creation and distribution of anescort application.

FIG. 2 is a flow chart of the creation and distribution of an escortapplication.

FIG. 3 is a schematic diagram illustrating the execution of an escortapplication.

FIG. 4A is a flow chart of the execution of an escort application.

FIG. 4B is another flow chart of the execution of an escort application.

FIG. 5 is a schematic diagram of a client.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

FIG. 1 is a schematic diagram 100 of the creation and distribution of anapplication program 102 b created for the Binary Runtime Environment forWireless (BREW), available from Qualcomm Incorporated of San Diego,California. BREW is an application development platform created byQualcomm for wireless devices. The wireless device 112, hereafterreferred to as a “client”, can be a cellular phone, a personal digitalassistant (PDA), a Blackberry, a laptop computer, a Pocket PC, anelectronic gaming device, a media player, or combinations of these. Insome implementations, the client 112 does not have wirelessconnectivity. An advantage of the BREW platform is that it hidesspecifics of the underlying device from applications which allowsapplications to be easily ported to different devices.

A so-called “escort” application program (e.g., 102 b) encapsulates adocument (e.g., 104) such as, for example, an Adobe Flash document, andenables the document to be downloaded to and presented on clients thatsupport BREW (e.g., 112). Flash and Flash Player are available fromAdobe Systems Incorporated of San Jose, California. Adobe Flash is anIntegrated Development Environment (IDE) for developing Flash documentsthat support, for instance, rich content, user interfaces, and webapplications. Adobe Flash Player is a multiple-platform virtual machineused to present Flash documents. Flash is commonly used to createinteractive web page content such as advertisements, integrate videointo web pages, and create rich, client-side applications, for example.

A BREW system includes a set of Application Programming Interfaces(APIs) 106 for running software on clients (e.g., 112). The APIs 106allow application software (e.g., 102 b) to be independent of client'snative software 114. The BREW APIs 106 provide applications access to aclient's communication systems, input systems (e.g., microphones,cameras), and output systems (e.g., displays, speakers). Moreover, theBREW APIs 106 also allow applications to take advantage of an automaticbilling model which can automatically charge a user for downloading anapplication or parts of an application, running an application, orcombinations of these.

To create the escort application 102 b, a software developer 108 firstcreates or identifies a document 104 for presentation on the clientdevice 112. The document 104 can include text, graphics, sound,animation, other multimedia content, and combinations of these. Thedocument 104 is not limited to a particular content format and cancontain interactive content. For example, the document 104 can beformatted as a Shockwave (from Adobe Systems Incorporated), PortableDocument Format (PDF), Flash, Flash Lite (from Adobe SystemsIncorporated), a sound or music file, an electronic game executable, amovie or animation file, or graphic file, etc. The document 104 canadditionally be compressed, encrypted or both.

The developer 108 uses a software development tool to combine a documentloader portion 102 a with the document 104 to create the BREW escortapplication 102 b. The document loader portion 102 a is a BREWapplication. In some implementations, the software development tool caninsert the document 104 contents into a data segment of the documentloader portion 102 a. The new escort application 102 b can be uploadedto a BREW Distribution System (BDS) as an item within a BDS catalog 110.The BDS catalog 110 is a system in which BREW applications are madeavailable over a wireless service provider to end users through awireless service provider's Application Download Server (ADS). Awireless service provider, also known as a wireless carrier, mobilephone operator, or cellular provider, is a company that providescommunication services for its subscribers' wireless devices.

A client user can browse a wireless service provider's ADS to locateBREW applications available within the BDS catalog 110, such as theescort application 102 b, for download to the client 112. Once theescort application 102 b is downloaded to the client 112, a user canchoose to execute the escort application 102 b or the escort application102 b can automatically execute. Execution of the escort application 102b causes execution of the document loader portion 102 a which, in turn,causes presentation of the document 104 on the client 112, as will bedescribed in more detail below.

FIG. 2 illustrates a flow chart of a method 200 for the creation anddistribution of an escort application (e.g., 102 b). A document (e.g.,104) is identified for eventual presentation on a client (e.g., 112;step 202). For example, the document can be a Flash document or a PDFdocument. A document loader portion (e.g., 102 a) is identified whichcontains instructions capable of causing presentation of the document ona client (e.g. 112; step 204). In some implementations, the documentloader portion is specific to the type of document. In addition, thedocument loader portion can be specific to the type of client userbilling desired (e.g. pay-per-download, pay-per-play, etc.).

The document and the document loader portion are then incorporated intoan escort application (e.g. 102 b; step 206). A software developmenttool, for example a compiler product, can bundle a document with adocument loader into an escort application. The development tool canalso compress and/or encrypt the document. The escort application isthen published in an application catalog such as the BDS catalog, forexample (step 208). This makes the escort application available to usersfor downloading into their clients. In some implementations, a clientdevice's wireless service provider provides client access to the catalogand facilitates downloading of the escort application from its servers.

FIG. 3 is a schematic diagram 300 illustrating the execution of anescort application. The client 112 can communicate with a wirelessservice provider network 304 in order to communicate with other clients,such as by sending/receiving instant messages and placing/recievingtelephone calls, for example. Additionally, the client 112 can downloadapplications (e.g., escort applications) selected from the BDS catalog110, or other catalog, by way of the wireless service provider network304, for example. The server 302 provides access to BREW applicationsstored in the catalog 110.

The escort application 102 b is dependent on one or more externalmodules which are needed to present the document 104. An external moduleis compiled separately from the escort application 102 b. In someimplementations, an external module is a BREW extension. Extensions aremodule software that can be downloaded once and shared by a number ofapplications, similar to Dynamic Link Libraries (DLL) in the MicrosoftWindows and Unix operating systems. During or after the escortapplication 102 b has been downloaded to the client 112, one or moreexternal modules (e.g., 306 and 308) which are needed by the escortapplication 102 b are automatically downloaded from a server (e.g., 302)by the BREW system if they are have not already been downloaded.

The escort application 102 b can begin to execute automatically afterthe download process has completed, or the escort application 102 b canbe explicitly invoked by the user. The escort application 102 binteracts with the public extension 308 by way of one or more APIs, forexample, to cause the public extension 308 to present the document 104bundled within the escort application 102 b. For example, a publicextension 308 API function call could take as arguments the location ofthe document 104 within the escort application 102 b, the document 104'stype, the document's 104 length, and other suitable parameters. Withthis information, the public extension 308 can obtain and present thedocument 104, such as by providing the document or a reference to thedocument to a Flash player or a PDF viewer.

In some implementations, the means for presenting the document 104 isincorporated into the public extension 308. In other implementations,the means is incorporated into a private extension 306 so that theescort application 102 does not interact directly with the privateextension 306. Instead, the public extension 308 interacts with theprivate extension 306 on behalf of the escort application 102 b. Theprivate extension 306 can include a fine level of granularity in its APIwhich can be taken advantage of by the public extension 308 forcontrolling the presentation of the document 104. The private extension306 API can be hidden from applications such that, in someimplementations, only through the public extension 308 can anapplication interact with the private extension 306. This has theadvantage of providing a simpler API to applications by hiding morecomplex APIs behind the public extension 308.

FIG. 4A is a flow chart of a method 400 for the execution of an escortapplication. The client (e.g., 112) identifies an escort application forexecution (e.g., 102 b; step 402). For example, such identification canbe caused by a user invoking the escort application from a graphicaluser interface on the client. The client executes the executable portionof the escort application (e.g., 102 a; step 404). The escortapplication signals an external module capable (e.g., 308) capable ofcausing presentation of the document portion of the BREW application(step 406). The document (e.g., 104) is then presented on the client.

FIG. 4B is another flow chart of a method 400 for the execution of anescort application. A BREW application containing a document is received(e.g., by a client; step 403). An external module (e.g., 306, 308) isreceived (step 405). The application is then executed, where theexecution causes presentation of the document by signaling the receivedexternal module (step 407). An account associated with the client isdebited or credited based on the first receiving, the second receiving,the executing or the signaling (step 409).

A revenue generation system is built into the BREW environment thatallows an account to be automatically charged for downloading files,executing applications, or combinations of these, according to a billingmodel. In one implementation, the BREW application performs calls to oneor more BREW extensions to verify access to the application. Forexample, a previously downloaded application can require additionalpayment in order to run because the monthly license for content accesshas expired. In this circumstance, a BREW extension can be used to enacta debit to the user's wireless service provider service account. Inanother implementation, a BREW extension can be used to trigger a creditto a user's wireless service provider service account.

FIG. 5 is a schematic diagram of a generic client 500, such as a cellphone, a smart phone, an electronic game device, a personal digitalassistance, a digital media player, other devices, and combinations ofthese. The system 500 can be used for practicing operations described inassociation with the flow diagrams 400 and 401. The system 500 caninclude a processor 510, a memory 520, a storage device 530, andinput/output devices 540. Each of the components 510, 520, 530, and 540are interconnected using a system bus 550. The processor 510 is capableof processing instructions for execution within the system 500. Suchexecuted instructions can implement one or more components of system300, for example. In one implementation, the processor 510 is asingle-threaded processor. In another implementation, the processor 510is a multi-threaded processor. The processor 510 is capable ofprocessing instructions stored in the memory 520 or on the storagedevice 530 to display graphical information for a user interface on theinput/output device 540.

The memory 520 is a computer readable medium such as volatile or nonvolatile that stores information within the system 500. The memory 520could store data structures representing one or more applications 102 b,a private extension 306 and a public extension 308, for example. Thestorage device 530 is capable of providing persistent storage for thesystem 500. The storage device 530 can be a floppy disk device, a harddisk device, an optical disk device, a flash drive, or a tape device, orother suitable persistent storage means. The input/output devices 540provide input/output operations for the system 500. In oneimplementation, the input/output device 540 includes a keyboard, stylusand/or pointing device. In another implementation, the input/outputdevice 540 includes a display unit for displaying graphical userinterfaces.

The input/output device 540 can provide input/output operations for theapplication 102 b. The application 102 b can be, for example, anapplication containing a document 104 formatted in Shockwave, PortableDocument Format (PDF), Flash or Flash Lite document format availablefrom Adobe Systems, Incorporated of San Jose, CA, or another documentformat or executable format for presentation on a wireless device. TheBREW application can include external modules required for itspresentation. Examples of such external module software componentsinclude private extension 306 and public extension 308. BREW APIs 106provide translation between the BREW application 102 software and thedevice-specific software 114 such as the software used for accessing theinput/output device 540. Such software components 102, 104, 106, 306,and 308 can be persisted in storage device 530, memory 520 or can beobtained over a network connection, to name a few examples.

Embodiments of the subject matter and the functional operationsdescribed in this specification can be implemented in digital electroniccircuitry, or in computer software, firmware, or hardware, including thestructures disclosed in this specification and their structuralequivalents, or in combinations of one or more of them. Embodiments ofthe subject matter described in this specification can be implemented asone or more computer program products, i.e., one or more modules ofcomputer program instructions encoded on a computer-readable medium forexecution by, or to control the operation of, data processing apparatus.The computer-readable medium can be a machine-readable storage device, amachine-readable storage substrate, a memory device, a composition ofmatter effecting a machine-readable propagated signal, or a combinationof one or more of them.

The term “data processing apparatus” encompasses all apparatus, devices,and machines for processing data, including by way of example aprogrammable processor, a computer, or multiple processors or computers.The apparatus can include, in addition to hardware, code that creates anexecution environment for the computer program in question, e.g., codethat constitutes processor firmware, a protocol stack, a databasemanagement system, an operating system, or a combination of one or moreof them. A propagated signal is an artificially generated signal, e.g.,a machine-generated electrical, optical, or electromagnetic signal, thatis generated to encode information for transmission to suitable receiverapparatus.

A computer program (also known as a program, software, softwareapplication, script, or code) can be written in any form of programminglanguage, including compiled or interpreted languages, and it can bedeployed in any form, including as a stand-alone program or as a module,component, subroutine, or other unit suitable for use in a computingenvironment. A computer program does not necessarily correspond to afile in a file system. A program can be stored in a portion of a filethat holds other programs or data (e.g., one or more scripts stored in amarkup language document), in a single file dedicated to the program inquestion, or in multiple coordinated files (e.g., files that store oneor more modules, sub-programs, or portions of code). A computer programcan be deployed to be executed on one computer or on multiple computersthat are located at one site or distributed across multiple sites andinterconnected by a communication network.

The processes and logic flows described in this specification can beperformed by one or more programmable processors executing one or morecomputer programs to perform functions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., an FPGA (field programmable gate array) or an ASIC(application-specific integrated circuit).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read-only memory ora random access memory or both. The essential elements of a computer area processor for performing instructions and one or more memory devicesfor storing instructions and data. Generally, a computer will alsoinclude, or be operatively coupled to receive data from or transfer datato, or both, one or more mass storage devices for storing data, e.g.,magnetic, magneto-optical disks, or optical disks. However, a computerneed not have such devices. Moreover, a computer can be embedded inanother device, e.g., a mobile telephone, a personal digital assistant(PDA), a mobile audio player, a Global Positioning System (GPS)receiver, to name just a few. Computer-readable media suitable forstoring computer program instructions and data include all forms ofnon-volatile memory, media and memory devices, including by way ofexample semiconductor memory devices, e.g., EPROM, EEPROM, and flashmemory devices; magnetic disks, e.g., internal hard disks or removabledisks; magneto-optical disks; and CD-ROM and DVD-ROM disks. Theprocessor and the memory can be supplemented by, or incorporated in,special purpose logic circuitry.

To provide for interaction with a user, embodiments of the subjectmatter described in this specification can be implemented on a computerhaving a display device, e.g., a CRT (cathode ray tube) or LCD (liquidcrystal display) monitor, for displaying information to the user and akeyboard and a pointing device, e.g., a mouse or a trackball, by whichthe user can provide input to the computer. Other kinds of devices canbe used to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, ortactile input.

Embodiments of the subject matter described in this specification can beimplemented in a computing system that includes a back-end component,e.g., as a data server, or that includes a middleware component, e.g.,an application server, or that includes a front-end component, e.g., aclient computer having a graphical user interface or a Web browserthrough which a user can interact with an implementation of the subjectmatter described is this specification, or any combination of one ormore such back-end, middleware, or front-end components. The componentsof the system can be interconnected by any form or medium of digitaldata communication, e.g., a communication network. Examples ofcommunication networks include a local area network (“LAN”) and a widearea network (“WAN”), e.g., the Internet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

While this specification contains many specifics, these should not beconstrued as limitations on the scope of the invention or of what can beclaimed, but rather as descriptions of features specific to particularembodiments of the invention. Certain features that are described inthis specification in the context of separate embodiments can also beimplemented in combination in a single embodiment. Conversely, variousfeatures that are described in the context of a single embodiment canalso be implemented in multiple embodiments separately or in anysuitable subcombination. Moreover, although features can be describedabove as acting in certain combinations and even initially claimed assuch, one or more features from a claimed combination can in some casesbe excised from the combination, and the claimed combination can bedirected to a subcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingcan be advantageous. Moreover, the separation of various systemcomponents in the embodiments described above should not be understoodas requiring such separation in all embodiments, and it should beunderstood that the described program components and systems cangenerally be integrated together in a single software product orpackaged into multiple software products.

Thus, particular embodiments of the invention have been described. Otherembodiments are within the scope of the following claims. For example,the actions recited in the claims can be performed in a different orderand still achieve desirable results.

What is claimed is:
 1. A system comprising computer memory encoded witha data structure, said data structure comprising: an application for anenvironment that allows porting of the application to different types ofwireless devices, the application including: an executable portion; anda document portion, wherein the executable portion is capable ofsignaling an external module to cause presentation of the documentportion by the external module and wherein the document portion,encapsulated in the application, is provided to a client that supportsthe environment.
 2. The system of claim 1 where: the document is one of:a Flash document, a Shockwave document, or a Portable Document Format(PDF) document.
 3. The system of claim 1 where: the document iscompressed, encrypted or both.
 4. The system of claim 1 where: theexternal module is a BREW extension.
 5. The system of claim 1 where: theexternal module is compiled separately from the application.
 6. A systemcomprising computer memory encoded with a data structure, the datastructure comprising: an executable module for an environment thatallows porting of an application to different types of wireless deviceswhere the executable module includes: an executable portion and a Flashcontent portion, where the executable portion is capable of causing thepresentation of the Flash content on a mobile device and wherein theFlash content portion, encapsulated in the executable module, isprovided to the mobile device.
 7. The system of claim 6 where: thedocument is compressed, encrypted or both.
 8. The system of claim 6where: the external module is a BREW extension.
 9. The system of claim 6where: the external module is compiled separately from the application.10. (canceled)
 11. (canceled)
 12. (canceled)
 13. (canceled) 14.(canceled)
 15. A computer-implemented method, comprising: identifying,by a client device, an application for an environment that allowsporting of the application to different types of wireless devices, theapplication including an executable portion and a document portion,wherein the document portion, encapsulated in the application, isprovided to the client device; and executing the executable portion,where the execution causes presentation of the document portion bysignaling an external module capable of causing the presentation of thedocument.
 16. The method of claim 15 where: the document is one of: aFlash document, a Shockwave document, or a Portable Document Format(PDF) document.
 17. The method of claim 15 where: the external module isa BREW extension.
 18. The method of claim 15 where: the external moduleis compiled separately from the application.
 19. The method of claim 15,further comprising: causing an account to be debited or credited basedon the identifying, the executing or the signaling.
 20. The method ofclaim 15, further comprising: first receiving the application; secondreceiving the external module; and causing an account to be debited orcredited based on the first receiving or the second receiving. 21.(canceled)
 22. (canceled)
 23. (canceled)
 24. (canceled)
 25. (canceled)26. A computer program product, encoded on a computer-readable medium,operable to cause data processing apparatus to perform operationscomprising: identifying an application for an environment that allowsporting of the application to different types of wireless devices, theapplication including an executable portion and a document portion,wherein the document portion is provided, encapsulated in theapplication, to the data processing apparatus; and executing theexecutable portion, where the execution causes presentation of thedocument portion by signaling an external module capable of causing thepresentation of the document.
 27. (canceled)
 28. (canceled) 29.(canceled)
 30. (canceled)
 31. A system comprising: a display forpresenting a document to a user; one or more interfaces configured toreceive input from the user; and processor electronics configured toperform operations comprising: identifying an application for anenvironment that allows porting of the application to different types ofwireless devices, the application including an executable portion and adocument portion, wherein the document portion is provided, encapsulatedin the application, to the processor electronics; and executing theexecutable portion, where the execution causes presentation of thedocument portion by signaling an external module capable of causing thepresentation of the document.
 32. The system of claim 31 where: thedocument is one of: a Flash document, a Shockwave document, or aPortable Document Format (PDF) document.
 33. The system of claim 31where: the external module is a BREW extension.
 34. The system of claim31 where: the external module is compiled separately from theapplication.
 35. The system of claim 1, wherein the executable portionsignals the external module by way of one or more applicationprogramming interfaces.
 36. The system of claim 6, wherein theexecutable portion signals an external module to cause presentation ofthe Flash content.
 37. The system of claim 36, wherein the executableportion signals the external module by way of one or more applicationprogramming interfaces.
 38. The method of claim 15, wherein signalingthe external module is facilitated through one or more applicationprogramming interfaces.
 39. The computer program product of claim 26,wherein signaling the external module is facilitated through one or moreapplication programming interfaces.
 40. The system of claim 31, whereinthe executable portion signals the external module by way of one or moreapplication programming interfaces.